1. Field
The present invention relates to computer data storage systems. More particularly, the present invention relates to a system and method of mapping all logical addresses from a host system to physical addresses of data storage devices for improving host computer data access performance.
2. Description of Related Art
As flash devices are getting cheaper, solid state based hard drives are getting more popular as replacement for traditional mechanical hard drives. Mechanical hard drives suffer in areas unseen in flash memory based drives due to its many moving parts (electrical motor, spindle shaft, read/write head, and a magnetic rotating disk). This leads to reliability problems especially when exposed to vibration and shock. Not only that, it also causes slow access time when fetching data from different areas of mechanical drive.
Since flash memory based drives typically have no moving parts, it can easily withstand harsh environmental conditions and physical mishandling that would lead to failures in regular mechanical drives. Also, access to a flash device does not suffer from the same problem as rotating drives wherein access time is increased if it is accessing data that are physically far from each other (since it requires head movements).
However, there are also several problems associated with using flash based drives over rotating drives. Flash devices cannot be written to when it is not in the erased state. After it has been written, the only way to bring it back to its erased state is to erase a larger block of flash called erase block or simply flash block which is the minimum amount of data that can be erased. Typical flash technology (specifically NAND flash) doesn't allow toggling of individual bytes from a programmed state back to its erased state. That means that when a host requests to change an existing sector via logical block address or LBA, the flash physical block location (addressed via physical block address or PBA) that contains this data must be erased first before attempting to write it with the new data. Considering that erase operations typically takes much longer in comparison to write or read operations, this greatly impacts the performance of the system. To avoid this performance degradation, applications usually don't place the new data to its old physical location but instead finds a new one (that is already erased) and relocates the logical sector to a new physical location and thus skips the erase operation. The old block would then be erased in the background. Since hosts are designed with typical rotating drives in mind, it knows that the sectors are “write in place” and not relocated to a different location so a different layer needs to handle the dynamic changes that occur within a flash-based drive. Some implementation do this on the file system where a new layer called “Flash Translation Layer” is the one that handles the mapping while others do it on the actual flash controller itself so that hosts will never see the difference.
Another unique characteristic of flash memory devices is that it has the tendency to wear-out when subjected to a certain amount of erase cycles (typically 100,000 cycles). This wearing-out leads to bad blocks and thus requires some sort of a bad block management to handle this. To prevent certain memory blocks from degrading much faster than the other blocks, a wear-leveling mechanism is required to assure that each and every block wears out evenly.
Current flash based systems have addressed these issues either at the file system level or embedded in the actual flash controller however most of them are targeted to single flash device or just a small array of flash devices. In order for flash-based hard drives to take over the rotating drives market share, it should be able to match the capacities of these drives. To achieve this, there is a need to create a system of several flash arrays in a board and stack these boards to attain a high-capacity solid state hard drive. To increase the performance, systems can allow parallel access to these flash arrays and also take advantage of new flash device features like multi-bank (sometimes called multi-plane) and copy-back. Existing approaches in selection of flash blocks for new physical location, replacement of bad blocks, or wear-leveling doesn't pay much attention on where to get these blocks, they simply do this in a round robin manner to spread out the access. With flash based systems allowing significant performance gains by correctly selecting the target blocks, it is important to have a good mapping scheme to take advantage of these features.